package org.jeecg.modules.deepseek.tools;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.deepseek.service.NoteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Description;

import java.util.Date;
import java.util.List;
import java.util.function.Function;


@Slf4j
@Configuration
public class WebNoteTools {

    @Autowired
    private NoteService noteService;

    @Schema(description = "用户内容填充到这个里面")
    public record NoteTextParsingRequest(
            @Schema(description = "概述")
            String noteText,
            @Schema(description = "页面标题")
            String noteTitle,
            @Schema(description = "复制内容")
            String noteContent,
            @Schema(description = "日期(按照标准格式)yyyy-MM-dd HH:mm:ss")
            String noteDate,
            @Schema(description = "请选择内容所属的分类，并根据内容自动或手动补充子分类，最终格式为：一级分类_二级分类_三级分类（三级分类可选）" +
                    "\\n\\n一级分类可选项包括：\\n- 工作相关\\n- 编程开发\\n- 人工智能\n- 语言学习\\n- 设计资源\\n- 影音娱乐\\n- 新闻阅读" +
                    "\\n- 生活日常\\n- 金融理财\\n- 实用工具\\n\\n示例：\\n- 影音娱乐_动漫_瑞克莫迪\\n- 编程开发_Java_SpringBoot" +
                    "\\n- 金融理财_投资_美股\\n- 实用工具_浏览器插件")
            String noteType,
            @Schema(description = "页面URL")
            String noteSourceUrl,
            @Schema(description = "从内容中总结出关键词") // 描述已更新
            List<String> noteKeyWord,
            @Schema(description = "心情：（从0开始，0是最不开心，数字越大越开心）")
            Integer noteMood
    ){
    }
    @Schema(description = "根据除了noteContent外的字段进行搜索的请求")
    public record NoteSearchRequest(
            @Schema(description = "概述搜索关键词")
            String noteText,
            @Schema(description = "页面标题搜索关键词")
            String noteTitle,
            @Schema(description = "日期搜索范围开始日期(按照标准格式")
            Date startDate,
            @Schema(description = "日期搜索范围结束日期(按照标准格式")
            Date endDate,
            @Schema(description = "类型搜索关键词，支持多个类型") // 描述已更新
            List<String> noteType, // **这里已修改为 List<String>**
            @Schema(description = "页面URL搜索关键词")
            String noteSourceUrl,
            @Schema(description = "关键字搜索关键词")
            String noteKeyWord,
            @Schema(description = "心情搜索范围最小值")
            Integer minNoteMood,
            @Schema(description = "心情搜索范围最大值")
            Integer maxNoteMood
    ){
    }
    @Bean
    @Description("将信息存到数据库,根据用户内容填充到这个参数里面")
    public Function<NoteTextParsingRequest, Boolean> getNoteTextParsing() {
        return (request) -> {
          log.info("添加信息tools：{}",request);
            noteService.saveNote(request);
            return true;
        };
    }


//    @Bean
//    @Description("根据用户提供的条件（除了noteContent）去搜索笔记，可以匹配所有字段，返回符合条件的笔记列表")
//    public Function<NoteSearchRequest, List<NoteTextParsingRequest>> getNoteSearch() {
//        return (request) -> {
//            return noteService.searchNotes(request);
//        };
//    }


}
